home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1996 #15
/
Monster Media Number 15 (Monster Media)(July 1996).ISO
/
os2
/
lxlt113.zip
/
LXLITE.GER
< prev
next >
Wrap
Text File
|
1996-05-22
|
26KB
|
508 lines
────────────────────────────────────────────────────
lxLite - ein Packer fuer ausfuehrbare OS/2-Dateien
────────────────────────────────────────────────────
Widmung: Meiner kleinen Tochter Alice,
geboren am 12 Feb, 1996 um 03:45.
1. Distribution
───────────────
Dieses Programm ist Freeware. Das heisst, man kann es verbreiten, wie man
will, ausser fuer den kommerziellen Gebrauch. Kommerzielle Verwendung ist
nur mit meiner ausdruecklichen Zustimmung erlaubt. Wie man mich kontaktieren
kann ist in der letzten Sektion dieser Datei zu sehen.
Freeware heisst aber auch, dass es keinerlei Garantie fuer das gibt, was
das Programm macht, ob es das macht was man erwartet, ob es ueberhaupt etwas
macht. Ich uebernehme keinerlei Verantwortung fuer irgendeinen Schaden,
entgangene Profite etc., die durch Fehler dieses Programmes (oder der
Uebersetzung der Dokumentation) verursacht werden.
Wie auch immer, es ist erlaubt, das Programm dazu zu verwenden, um jedes,
auch jedes kommerzielle Produkt zu verbessern. Und zwar nicht um den
eigenen Vorteil, sondern um den Vorteil aller armen User, die sich mit
riesigen ausfuehrbaren Dateien herumaergern muessen.
Das Programm ist ausschliesslich in Virtual Pascal 1.0 Beta #003,
geschrieben, vor allem mit dem eingebauten 32-bit Assembler. Virtual Pascal
ist eine excellente Sprache, die alle Vorteile und Moeglichkeiten von OS/2
bedient und unterstuetzt, gleichzeitig Borland Pascal kompatibel ist, und
einen maechtigen eingebauten Optimierer hat.
Falls du den Source Code von lxLite willst, bitte wende Dich an mich, aber
du musst mir ganz sagen WARUM du ihn brauchst; Leute, die fremde Programme
unter eigenem Namen verkaufen wollen, bekommen ihn sicher nicht.
2. Introduction
───────────────
Ich denke, wir alle sind recht sauer ueber die gewaltige Groesse die fast
alle modernen Programme haben, die unter OS/2 laufen (fuer WinDOS gilt
allerdings das gleiche), ohne oft entscheidend mehr zu koennen als Programme
frueherer Zeiten. Ich verstehe nicht, warum sie so gross sind, weil die
meisten Compiler, sogar IBM CSet generieren Code in moderaten Groessen.
Nehmen wir als Beispiel das allseits bekannte MultiMaint. Was um alles in
der Welt macht das Ding in einer 700K grossen EXE-Datei? Ich verstehe es
nicht. Dazu kommt noch, warum wird die beinahe gleiche EXE-Datei noch
doppelt und dreifach dazugepackt (Ich meine MultiSafe und IniMaint, die mit
MultiMaint daherkommen). Das Programm ist ja ganz nett und es macht seine
Arbeit ganz gut, aber fuer diese Arbeit ist es einfach zu gross. OS/2 kernel
haben etwa den gleichen Umfang. Wo ist da die Relation? Ich kann (und will)
es mir einfach nicht leisten so einen grossen Haufen Mist auf meine Platte
zu laden, also habe ich MultiMaint & Co. wieder gekuebelt. Zu dumm fuer
deren Autoren.
lxLite ist ein Workaround fuer dieses Problem. Ausfuehrbare Dateien kann
man packen, sie nehmen dann nur noch den halben Platz ein, und machen noch
immer den glichen Job. Dummerweise braucht es auch den gleichen Platz im
Speicher - das ist die Schuld des Programmautors.
Soviel ich weiss, gibt es fuer OS/2 nur ein Programm, das etwas Aehnliches
macht, REPACK von IBM (EWS?). Aber verglichen mit lxLite erzeugt es
groessere Dateien, obwohl es den gleichen Algorithmus verwendet. Zum
Beispiel, COURIER.FON aus OS/2 Warp Build 8.192 wird von REPACK zu 44K, von
lxLite aber in 34K gepackt. Spuer den Unterschied! BTW, LINK386+Resource
Compiler compilieren COURIER.FON auch in eine 44K-Datei. Daher denke
ich,dass das sie eine gemeinsame Library verwenden.
Ich komprimierte alle meine ausfuehrbaren Dateien (inklusive aber nicht
nur ?:\os2\*.exe, ?:\os2\dll\*.* und ?:\os2\dll\ibmnull;laserjet) und mein
system ist nach wie vor stabil. Ein lxLite Benutzer (Pavel Roskin) hat
festgestellt, dass lxLite sogar os2krnl komprimiert:-) Sehr angenehm vor
allem fuer eine einzelne Bootdiskette [Anmerkung d. Uebersetzers: Es
stimmt].
3. Features
───────────
lxLite komprimiert die Dateien auf die gleiche Art wie LINK386 es tut. Es
gibt keine andere Moeglichkeit gepackte ausfuehrbare Dateien unter OS/2 zu
implementieren, als die zwei, die OS/2 Warp (oder die eine die 2.x) kennt.
So, hier ist eine kurze Beschreibung dieser beiden Algorithmen:
1. Run-length packing. Das ist im Prinzip die gleiche Methode, wie sie
Microsoft C fuer DOS verwendet. Das Ergebnis ist sehr SCHLECHT, weils sich
ausfuehrbare Dateien nicht fuer die Pack-Methode eignen. Zum Beispiel, PCX
Dateien werden auf die gleiche Art gepackt.
2. Eine Art Lempel-Ziv Algorithmus. Lempel-Ziv ist die Methode, die
beinahe alle DOS-EXE Packer verwenden - LZEXE, PKLITE, PGMPAK etc. Die
Methode die fuer ausfuehrebare OS/2 Dateien standardisiert ist, ist IMHO
nicht die effektivste. Dazu kommt noch, dass ausfuehrbare OS/2 Dateien einen
anderen Ladealgorithmus haben als DOS-EXE-Dateien, Teile von ausfuehrbaren
OS/2-Dateien koennen auch nur geladen werden, wenn sie gebraucht werden.
Deshalb kann ein Lempel-Ziv dictionary nicht ueber eine einzelne Page (4096
Bytes) hinausgehen. Folglich sind die Resultate auch nicht so gut, wie sie
theoretisch sein koennten.
lxLite kann beide Methoden verwenden, sowohl zum Packen, als auch zum
Entpacken.
Im Allgemeinen ergibt die zweite Methode die besseren Resultate, aber
moeglicherweise (?) gibt es Dateien fuer die die erste besser ist.
Aus diesem Grund werden defaultmaessig beide Methoden angewendet, die mit
dem kleineren Ergebnis gewaehlt.
lxLite kann auch benutzt werden, um Dateien zu entpacken, die bereits
komprimiert sind, sei es mit mit lxLite, LINK386 oder REPACK von IBM.
Was fuer Dateien koennen nun mit lxLite gepackt werden? Das LX Format wird
unter OS/2 beinahe ueberall verwendet: Beinahe alles ist im LX format. Nicht
nur EXE-Dateien, sondern auch .DLL, .PDR, .QPR, .DRV, .FON, .SYS-Dateien
koennen mit lxLite gepackt werden.Sogar die VDDs (Virtual Device Drivers) in
\OS2\MDOS koennen damit gepackt werden.Praktisch kann man lxLite auf jedes
Datei loslassen: Wenn es kein LX ist, wird lxLite es nicht anruehren.
Es ist also moeglich, den ganzen \OS2\*\ zu komprimieren, man bekommt jede
Menge Extraplatz ohne irgendwelchen Overhead! Die DeKompressionszeit wird
durch die verkuerzten Ladezeiten der verkleinerten Dateien von der Platte
bei weitem aufgewogen.
Also, Reboot von einer Diskette (eventuell von den beiden
Installationsdisketten und dann F3 waehlen, dann das entsprechende Laufwerk
waehlen, wo das installierte OS/2 liegt. Dann ist folgendes beim Command
prompt einzugeben:
\[path]\lxLite os2\*.exe os2\dll\*.* os2\dll\ibmnull\*.drv
und so weiter. So koennen auch die Dateien, welche zur Laufzeit
normalerweise gesperrt (EXE,DLL) sind, problemlos gepackt werden. lxLite
Version 1.00 und hoeher ist sogar in der Lage Dateien, die gerade benutzt
werden, zu packen. In diesem Fall kann warnt lxLite und fragt nach ob es
das Modul auslassen oder durch seine gepackte Version ersetzen soll.
Grundsaetzlich ist das ersetzen auch so kein Problem, nur muss man im
Hinterkopf behalten, dass das Original bereits im Speciher sitzt, und so
auch jede Menge Platz im SWAPPER.DAT auffressen. Ein Reboot sobald wie
moeglich ist daher immer eine gute Idee.
Versionen von lxLite ueber 1.00 gibt es in zwei verschiedenen EXE-Dateien:
lxLite.exe ist die normale Version fuer OS/2 v2.99, Warp und hoeher. Die
andere, namens lxLite2x.exe ist fuer die aelteren 32 bit Versionen von OS/2
(i.e. 2.x, NICHT 1.x weil unter 1.x gab es das LX Format noch nicht). Als
OS/2 Warp User kann man es getrost loeschen.
4. Optionen
───────────
Es gibt jede Menge Optionen in lxLite. Ich liebe Optionen einfach :-)
Deshalb kann man bei lxLite beinahe alles und jedes konfigurieren. Um den
User vor allzuviel Konfiguration zu schuetzen, unterstuetzt lxLite eine
einzelne Konfigurationsdatei, in der gleich einige Konfigurationen
mitgeliefert ('factory defaults') sind. Sie sind weiter unten aufgelistet:
─────────────────────────────────────────────────────────────────────────────
DEFAULT (wird standardmaessig geladen): DEFAULT ist eine `Arbeitskonfigura-
tion'. Alle parameter sind auf maximale Kompression gesetzt. Die Er-
zeugung von .BAK Dateien ist abgeschaltet. Beachte, dass diese Konfigura-
tion IMMER geladen wird, bevor irgendwelche andere Optionen wirksam
werden, sogar die /C{#} Option wird ausgefuehrt NACHDEM die DEFAULT-
Konfiguration geladen Worten ist.
FAST: Niedrigste Kompressionsrate, kuerzeste Ladezeiten. Wenn man IBM
glaubt, werden ausfuehrbare Dateien schneller geladen, wenn Datenobjekte
innerhalb der Datei an Sektorgrenzen (512 Bytes) ausgerichtet werden.
Ich kann eigentlich keinen Unterscheid feststellen, daher: Selber
ausprobieren! Vorkomprimierte Daten werden nicht de-komprimiert und
wieder re-komprimiert.
FAST2: Packt ein bisschen besser, aber langsamer. Ladezeiten sind so schnell
wie bei CFG#1.
VER2X: Optimal fuer pre-Warp Versionen von OS/2. Versionen vor Warp (3.0)
wissen nichts von der Lempel-Ziv (/EXEPACK:2) Methode. Programme sollten
nicht mit Lempel-Ziv gepackt werden, falls die Moeglichkeit besteht, dass
sie unter OS/2 2.xx (ausser 2.99) laufen sollen.
FAILSAFE: Lempel-Ziv packen ist eingeschaltet. Ein fehlersichere Konfigura-
tion. Alle Daten werden genau wie von LINK386 geschrieben, deshalb sind
die Dateien etwas groesser als bei der DEFAULT-Konfiguration. Nur fuer WARP
(oder hoeher) und 2.99!
MAX: Beste Kompressionsrate. SEHR LANGSAM! Wird wohl selten gebraucht wer-
den.
NEWSTUB: Das ist eine spezielle Konfiguration mit der man den DOS-Stub in
LX Executables durch einen anderen ersetzen kann, ohne irgendetwas
anderen zu veraendern. Du musst einen Dateinamen fuer den neuen Stub
angeben - diese Konfiguration teilt lxLite mit, dass es alte, gepackte
Objekte nicht entpackt und unkomprimierte Objecte nicht packt.
MINSTUB: Diese Konfiguration ist mit NEWSTUB verbunden und ersetzt durch
den kleinstmoeglichen Stub vom Typ `say-error-and-exit`. Kleiner gehts
nimmer (glaub ich zumindest), ausser du kuerzt die Fehlermeldung.
VDMSTUB: Diese Konfiguration befiehlt lxLite, den vorgefundenen Stub durch
einen`run-from-VDM`-Type zu ersetzen. Dieser ist auch so kurz, wie
moeglich:-). Bitte die Beschreibung der /T{#} Option fuer weitere Details
durchlesen.
INFO: Diese Konfiguration verwenden um an Informationen ueber das ausfuehr-
bare Modul zu erhalten ohne es neu zu schreiben (siehe auch Option /V+)
---------------------------------------------------------------------------
Um eine eine spezifische Konfiguration zu verwenden, ist lxLite mit /C#
als Parameter aufzurufen, wobei # der Name der Konfiguration ist. Die
Einstel- lungen sind in der Datei lxLite.CFG im gleichen Verzeichnis, in dem
sich lxLite.EXE befindet. Kuemmere dich nicht um Pfade, lxLite wird sein
.CFG schon finden. Beispiel: Um die Konfiguration `max` zu verwenden, starte
lxLite /cMax.
Fuer eine detailierte Beschreibung des .CFG-Dateiformats, lies die ueber-
naechste Sektion.
Nun kommt eine detaillierte Erklaerung darueber was jeder einzelne Switch
tut. Jeder Switch, der das '+'- oder '-'-Zeichen akzeptiert (um Aktion ein-
oder auszuschalten) kann auch ohne Zeichen benutzt werden, das heisst dann
halt '+'. Das heisst uz.B., /V+ ist gleich wie /V.
/A{P|S|N{P|S}}
setzt die Ausrichtungsmethode (Alignment) fuer das erste und die weiteren
Objekte. Das erste Objekt kann man auf [P]age shiftt, [S]ector oder [N]o
boundary ausrichten. Die letzte Option (No boundary) wird von LINK386
niemals benutzt, aber es funktioniert, und das LX Format erlaubt es.
Alle Objecte ausser dem ersten MUeSSEN zumindest auf PageShift boundary
ausgerichtet sein. PageShift ist ein Wert, der im LX Header specifiziert
ist. Um ihn neu zu definieren, verwende die /R# Option.
/B{+|-}
Das Umbenennen der Originaldatei in .BAK ein- (+) oder ausschalten (-).
Beachte bitte, dass das eine BETA-Version ist - deshalb sind .BAK Dateien
standardmaessig eingeschaltet.
/C{#}
Verwenden der Konfiguration mit ID = #. Die zwei vordefinierten
Konfigurationsnamen sind "DEFAULT" und "UNPACK". Die Erste wird immer
geladen, wenn lxLite startet und die Zweite wird benutzt wenn die /X+
Option angegeben wird (NICHT gleichbedeutend mit /cUnpack).
/D{+|-}
Drinnen lassen (+) oder rauswerfen (-) von [D]ebuginfo falls in einer
Datei angetroffen. Manche Softwareproduzenten vergessen (?) ihre
Applikation ohne Debuginfo neu zu linken, sobald sie fertig ist. Diese
Option kann dir manchen Platz bringen und beeintraechtigt die Stabilitaet
und Funktionalitaet ueberhaupt nicht. Standardmaessig ist es eingeschaltet
(i.e. Debuginfo wird rausgeworfen).
/F{+|-}
Erzwungenes repacking. Ist zu verwenden um die Meldung `already
processed` zu uebergehen, i.e. wemn lxLite denkt, dass die Datei schon
bearbeitet wurde, das aber in Wirklichkeit nicht der Fall war. Das
passiert normalerweise nicht, kann aber passieren, wenn man versucht
einen Stub durch einen anderen Stub derselben Groesse zu ersetzen, und
zwar bei einer bereits komprimierten Datei.
/M{R{N|1|2|3}|L{N|1}}
Setzt die Kompressionsmethode und -parameter. Das zweite Zeichen
definiert die Methode, die verwendet werden soll: `R` steht fuer
Run-Length (/EXEPACK:1) und 'L' for Lempel-Ziv (/EXEPACK:2). Das dritte
Zeichen ist der Kompressionslevel, der mit der Methode erreicht werden
soll; Falls N spezifiziert wird, ist die Methode abgeschaltet. Drei
Levels gibt es fuer die Run-Length-Kompression. Der Level 1 ist der
schnellste. Er sucht nur nach 1-Zeichen Strings. Zum Beispiel, ein
'AAAAAAAA' String wird erkannt und zu 8, 1, 'A' gespeichert, waehrend
ein 'ABABABAB' String unkomprimiert gespeichert wird. Level 2 erkennt
Strings jeder Laenge bis 16 Zeichen. Das Beispiel von oben wird zu
4,2,'AB' kodiert. Das ist die Standardeinstellung fuer die meisten
'Factory`-Konfigurationen. Und als letztes, der dritte Level sucht nach
allen Strings jeder Laenge bis zu einen halben Page-Laenge (= 2048). Die-
se Kompressionsmethode ist SEHR langsam and ergibt selten echte
Ergebnisse, man sollte sie nur verwenden wenn man sie wirklich braucht.
Der Lempel-Ziv Algorithmus kann nur entweder abgeschaltet (/MLN) oder
eingeschaltet (/ML1) sein. Wenn er eingeschaltet ist, sucht er nach al-
len Matchesunnter Verwendung einer ziemlich schnellen Hash-Tabelle, des-
halb gibts keinen Grund die Kompression abzustufen.
/P{+|-}
Ein- (+) oder ausschalten (-) einer Pause vor jeder Datei. Das Programm
zeigt den Namen der Datei, die als naechstes gepackt werden soll, und
ermoeglich eine Auswahl, ob sie bearbeitet oder in Ruhe gelassen werden
soll.
/R{#}
[R]e-align (ausrichten) der Pages auf eine spezielle Boundary. (#) muss
eine Potenz von 2 sein. Diese Option ist analog zu LINK386`s /ALIGN:
Switch. Viele Programmierer kuemmern sich nicht darum, dass das /A:
standardmaessig auf eine Boundary von 512 (ein Sektor) gesetzt ist und
richten jede Page der ausfuehrbaren Module auf 512 Byte aus. Das
Ergebnis ist ein Haufen unbenutzter Platz innerhalb der Programmdatei.
Man kann nun solche Dateien mit einer anderen /ALIGN: Option neu linken.
Standardmaessig ist /R:4. Um lxLite zu zwingen sich wie LINK386, muss man
/R:512 verwenden. Das ist equivalent zu /ASS :-) .
/S{+|-}
Zeigen (+) oder nicht zeigen (-) der aktuellen Konfiguration. Das ist
ganz brauchbar, um mal zu schauen welche Einstellungen in der CFG-Datei
gespeichert sind, besonders bei verketteten Konfigurationen (siehe
weiter unten). Beispiel: lxLite /CDEFAULT /S zeigt die standardmaessigen
Einstellungen.
/T{#}
Die mit # specifizierte Datei als neuen DOS-Stub verwenden. Ein DOS-Stub
ist eine kleine DOS-.EXE-Datei, die in eine OS/2`s LX-Datei gelinked
wird, damit das Programm eine Fehlermeldung ausgibt, wenn es von DOS aus
gestartet wird. Normalerweise sieht das etwa folgend aus:
Dieses Programm laeuft nur unter OS/2
Mit lxLite kommen 2 DOS-Stub-Programme mit: stub_min.bin und
stub_vdm.bin. Der erste ist ein Standard-`Schreib geht nicht und Ende`
Typ, aber er ist etwas kleiner als die ueblichen DOS-Stub-Programme die
von den ueblichen Linkern erzeugt werden. Der zweite ist ein Stub, der
eine neue OS/2-Session startet und das Programm daraus startet. Falls
OS/2 nicht gefunden wird, wird die uebliche Fehlermeldung produziert.
/U{+|-}
Ein- (+) oder ausschalten (-) des Entpackens einer Datei vor dem Packen.
lxLite weiss wie man beide der beschriebenen Methoden zum Entpacken
verwendet, deshalb ist die Option standardmaessig ist eingeschaltet.
Ausschalten ist nur dann sinvoll, wenn Zeit gespart werden soll.
/V{+|-}
Verbose (zeigt ein ganzen Haufen Dateiinformationen) Das ist der
Schalter fuer Neugierige:-) Mit /V+ zeigt lxLite ein paar Informationen
ueber die bearbeitete Datei an (um komplette Information ueber .LX Dateien
zu bekommen, rate ich jedem exeHdr.EXE from OS/2 Programmer`s Toolkit zu
verwenden).
/W{+|-}
Ein- (+) oder ausschalten (-) ob das Ergebnis des Packens auf die Platte
geschrieben werden soll. Standardmaessig ist es eingeschaltet (nona!),
aber du kannst es ausschalten falls du die Informationen ueber /V+
anschauen willst, ohne die Datei neu zu packen und frisch zu schreiben.
Diese Option kann auch fuer debugging der Optionen nuetzlich sein.
/X{+|-}
e[X]pandieren (+) oder Packen (-) der uebergebenen Dateien. Diesen
Switch verwendet man, um Dateien zu entpacken. lxLite kann sowohl
Dateien, die es selbst komprimiert hat, als auch solche, die von anderen
Programmen mit den Standardmethoden gepackt wurden. (i.e. Resource
Compiler, LINK386, REPACK). /X- ist nicht identisch mit der /cUnpack
Option.
/Z{#}
Diese Option setzt den `threshold` fuer lxLite und hilft so
festzustellen, ob eine Stub ein `dummy` ist oder ob er eine spezielle
Funktion hat. Es gibt einige Programme (zum Beispiel, \os2\xdfloppy.exe)
die sowohl unter DOS als auch unter OS/2 laufen - in solchen Programmen
ist die DOS Executable in der OS/2` LX als ein DOS stub implementiert.
Standardmaessig (and using simply /Z) lxLite haelt jeden Stubs der groesser
als 1024 Bytes ist, fuer einen funktionellen, und daher hat die /T{#}
Option auf diese keinen Effekt.
/?,/H
Zeigt eine kurze Hilfe an. Diese ist ganz brauchbar, wenn man einen
Switch aus der ganzen Liste vergessen hat:-)
─────────────────────────────────────────────────────────────────────────────
Das .CFG Dateiformat ist so simpel wie moeglich: Es ist eine reine ASCII
Textdatei, welche mit jedem beliebigen Texteditor bearbeitet werden kann.
Jedes Zeichen nach einem Strichpunkt ';' wird ignoriert, i.e. damit koennen
Kommentare in die Konfigurationsdatei eingesetzt werden:
; Diese Zeile ist ein Kommentar
Jede Zeile, die mit einem Wort und einem Doppelpunkt beginnt (z.B.:
"Wort:") wird als einzelne Konfiguration behandelt. Das Wort identifiziert
die Konfiguration.
Das ist ein Beispiel fuer einen Konfigurationseintrag:
FAILSAFE: /APP /B- /G+ /R4 /MR2 /ML1 /P- /U+ /V-
Wie man sieht stehen nach dem Doppelpunkt beliebige Switches, wie man sie
auch in der Kommandozeile nach lxLite schreiben wuerde. Rekursive /C
Optionen werden nicht ignoriert, so dass man mehrere Konfigurationen
aneinander binden kann, aber die /C Option wird als letztes verarbeitet,
das heisst von zwei ueberlappenden Optionen wird nur die letzte effektiv
sein. Als Beispiel:
here: /app /b- /g+
da : /ass /b+ /p+ /chere
"lxLite /cda " ist also gleichbedeutend mit "lxLite /app /b- /p+ /g+". Man
beachte, dass lxLite auch weitere Aufrufe auf dieselbe Konfiguration
ignoriert, um unendliche Schleifen zu vermeiden. Das bedeutet, "lxLite /cOne
/cOne" wird die `One` Konfiguration nur EINMAL laden.
5. Error messages
-----------------
Wie die allermeisten normalen Programme erzeugt lxLite manchmal
Fehlermeldungen :-) Manche von Ihnen erscheinen in aehnlichen Situationen
haben aber unterschiedliche Ausloeser. Hier ist eine kurze Liste der
haeufigsten Fehler:
* Invalid Konfiguration Datei format:
Ungueltiges Format der Konfigurationsdatei. Selbsterklaerend:-)
* Error reading Konfiguration Datei:
Diese Meldung wird nur generiert, wenn die Konfigurationsdatei physisch
nicht lesbar ist. Das Programm erzeugt keine Fehlermeldung falls die
Konfigurationsdatei einfach fehlt.
* Error writing Konfiguration Datei:
Fehler beim Schreiben der Konfigurationsdatei. Selbsterklaerend:-)
* Error reading executable
Diese Meldung wird generiert, wenn die ausfuehrbare Datei physisch
nicht lesbar ist.
* error writing executable
Diese Meldung wird generiert, wenn die ausfuehrbare Datei nicht mehr auf
die Platte geschrieben werden kann. Das kann dann passieren, wenn auf
der Platte zuwenig Platz ist, lxLite selbst ueberprueft das nicht.
* invalid executable Datei format
Die Datei ist nicht vom Format [L]inear E[x]ecutable. Bei EXE-Dateien
kann diese Meldung auftreten, wenn sie im alten, '[N]ew [E]xe
(bwhahaha)' Format sind oder eine DOS-EXE-Datei oder eine WinDOS-
EXE-Datei.
* unsupported executable format revision
Diese Meldung wird generiert (vielleicht:-), wenn die ausfuehrbare Datei
eine andere Dateiformatrevision hat als 0. Da OS/2 Warp normalerweise
nur mit Revision 0 arbeitet, duerfte dieser Fehler normalerweise nie
auftreten.
* invalid Wort/dWort ordering in executable
Die Datei verwendet die 'little-endian' Byte order. Wahrscheinlich ist
sie nicht fuer eine Intel-Plattform-Maschine gedacht.
* executable target ist an unsupported CPU type
Das kann passieren, falls die Ziel CPU eine andere als 286, 386, 486
oder P5 ist.
* executable target ist an unsupported OS
Das heisst, dass die Ausfuehrbare Datei nicht fuer OS/2 ist. WinDOS 95
verwendet ein aehnliches Format, aber seine Kennung ist nicht LX
sondern LE, daher sollte es normalerweise eine 'invalid format'
Meldung geben.
* unknown entry bundle type in executable
* unknown page flags in executable
* invalid object page detected in executable
Diese alle bedeuten, dass lxLite etwas ueber die interne Struktur nicht
versteht. Ich bitte um Benachrichtigung, falls jemand Dateien findet
bei denen diese Fehlermeldungen auftreten.
* nicht enough memory to load executable
Ich glaube nicht, dass dieser Fehler unter OS/2 auftreten kann:-) Eher
wird eine 'Kein Platz mehr im SWAPPER.DAT' Meldung auftauchen. Wie
auch immer, ich finde, es war keine gute Idee der IBM-Programmierer
einen Fehler zu erzeugen, statt auf die Speicheranfrage einfach einen
NIL-Pointer zurueckzugeben :-(
6. To-do-Liste
--------------
Das ist eine Liste aller Features, die plane in zukuenftigen Versionen
einzubauen. Jede Anregung ist willkommen, wie man mich erreicht, siehe
letztes Kapitel.
* Nichts - sags mir wenn du etwas willst..
7. Bekannte Fehler und Einschraenkungen
--------------------------------------
Hier ist eine Liste von Programmen, die sich aus irgendeinem Grund nicht
packen lassen, probieren sinnlos:
* PMJPEG v1.5 bis 1.74. Wie auch immer, sogar IBM`s REPACK kann es nicht
packen, ich denke, dass es sich entweder um einen Bug im Linker, der benutzt
wurde, um es zu generieren (die ganze EXE hat eine seltsame Struktur) oder
eine Art debug-Schutz (executable checksum Ueberpruefung?)
* Ausfuehrbare Dateien, die mit VX-REXX erzeugt wurden, werden, wie mir
berichtet wurde, von lxLite auch nicht richtig gepackt. Ich das aber
hoffentlich fixen sobald ich eine entsprechende Datei in die Finger bekomme.
8. Den Autor kontaktieren
-------------------------
Via Email bin unter folgenden Adressen erreichbar:
FIDOnet: 2:5030/84.5 (prefered)
Internet: Andrew Zabolotny@p5.n84.r5030.z2.fidonet
bit@freya.etu.ru (seldom)
Enjoy,
_\ndy
9. Der Uebersetzer
──────────────────
Ich war von Andys Programm so begeistert, dass ich ihm spontan angeboten
habe, fuer ihn die Dokumentation der Version 1.01 ins Deutsche zu ueber-
setzen. Manches klingt etwas holprig, aber erstens mache ich das nur
hobbymaessig, zweitens bin ich kein professioneller Programmierer. Aber ich
hoffe, es hilft trotzdem etwas.
Via Email bin unter folgenden Adressen erreichbar (obwohl das ziemlich
sinnlos ist, da ich ausser der Uebersetzung nichts beigesteuert habe):
FIDOnet: Herwig Bauernfeind, 2:312/5.35
InterNet: H_BFD@fidonet.at (funktioniert zur Zeit aber nicht so gut)